/**
  * @file    :Stack.hpp
  * @brief   :栈的抽象模板类
  * @author  :TMJ
  * @version :V1.0.0
  * @date    :2023-12-27
  */

#ifndef _STACK_STACK_H_
#define _STACK_STACK_H_

template<typename type>
class Stack {
public:
    // 入栈
    virtual bool Push(const type &data) = 0;

    // 出栈
    virtual bool Pop(type &data) = 0;

    // 出栈(不保存数据)
    virtual bool Pop() = 0;

    // 获取栈顶元素
    virtual bool Top(type &data) = 0;

    // 判断栈是否为空
    virtual bool IsEmpty() = 0;

    // 获取栈的大小
    virtual int Length() = 0;
};

#endif// _STACK_STACK_H_